import { FeedbackTypeEnum, FormTypeEnum, SupplierFormStatusEnum } from '@/constants/supplier';

/**
 * 供应商表单 基础
 */
export interface SupplierFormBase {
  /**
   * 零部件编码
   */
  partCode: string;
  /**
   * 零部件名称
   */
  partName: string;
  /**
   * 同类编码
   */
  partSuitCode: string[];
  /**
   * 数量
   */
  num: string;
  /**
   * 单位
   */
  unit: string;
  /**
   * 采样年份
   */
  dataYear: string;
  /**
   * 备注
   */
  remark: string;
}

/**
 * 供应商反馈清单分页 返回参数
 */
export interface GetSupplierFormListResult extends SupplierFormBase {
  /**
   * 表单编号
   */
  formNo: string;
  /**
   * 表单类型(客户下发,自行创建)
   */
  formType: keyof typeof FormTypeEnum;
  /**
   * 流程实例Id
   */
  processInstanceId: string;
  /**
   * 反馈类型(场地数据,认证报告)
   */
  feedbackType: keyof typeof FeedbackTypeEnum;
  /**
   * 状态
   */
  status: keyof typeof SupplierFormStatusEnum;
  /**
   * 创建时间
   */
  createTime: string;
  /**
   * 创建人
   */
  creator: string;
}

/**
 * 供应商数据集状态计数 返回参数
 */
export interface GetSupplierStatusCountResult {
  /**
   * 未提交
   */
  unSubmittedCount: number;
  /**
   * 审核中
   */
  auditCount: number;
  /**
   * 已完成
   */
  finishCount: number;
}

/**
 * 创建供应商表单 入参
 */
export interface CreateSupplierFormParams extends Omit<SupplierFormBase, 'remark'> {
  /**
   * 备注
   */
  remark?: string;
}

/**
 * 供应商反馈清单详情 返回数据
 */
export interface GetSupplierFormDetailResult extends GetSupplierFormListResult {
  /**
   * 工艺流程图/认证报告名称
   */
  attachmentName: string;
  /**
   * 工艺流程图/认证报告地址
   */
  attachmentUrl: string;
  /**
   * 工艺过程描述/认证机构
   */
  attachmentDesc: string;
  /**
   * 证书编号
   */
  certificateNo: string;
  /**
   * 因子单位
   */
  factor: string;
  /**
   * 因子单位
   */
  factorUnit: string;
  /**
   * 产物数量
   */
  productNum: string;
  /**
   * 单位
   */
  unit: string;
  /**
   * 联系电话
   */
  contactPhone: string;
  /**
   * 联系人
   */
  contact: string;
  /**
   * 供应商名称
   */
  supplierName: string;
  /**
   * 数据采集周期
   */
  dataMonth: {
    startMonth: string;
    endMonth: string;
  };
  /**
   * BOM总重量
   */
  totalDosage: number;
}
